1
메소드 호출의 메커니즘
AI035Lesson 13
00:00

루비에서는 메소드 호출이 메모리 주소로 정적 점프하는 것이 아니라, 동적인 메시지 전달 이벤트입니다. 메소드를 호출할 때는 '수신자'에게 메시지를 보내는 것입니다. 수신자이 메시지는 메소드 이름, 선택적 인수, 그리고 잠재적인 블록 연결으로 구성됩니다.

1. 호출 문법과 모호성

루비는 큰 유연성을 허용합니다: Foo.BarFoo.Bar() 은 동일합니다. 그러나 Foo::Bar 는 일반적으로 상수를 의미하지만, Foo::Bar() 는 메소드 호출을 강제합니다. 괄호는 종종 생략되어, 메소드가 속성처럼 보이는 도메인 특화 언어(DSL) 경험을 만듭니다.

2. 연산자 분해

연산자는 실제로 재정의 가능한 메소드입니다. 표현식 expr1 + expr2 은 다음의 약간 더 간단한 표현식입니다: (expr1).+(expr2). 이것은 단항(-obj), 이항(a < b), 및 접미사 연산자에 적용됩니다.

수신자메시지(메소드)블록 사이드카제어권 넘기기

3. yield 메커니즘

메소드는 yield 을 사용하여 제어 흐름을 관련 블록으로 밀어넣습니다. 사용함으로써 Kernel.block_given?는 메소드가 호출자의 컨텍스트에 따라 로직 처리 방식을 동적으로 결정할 수 있게 합니다.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>